﻿using System.Text;

namespace System
{
    [ImportClass(string.Empty, "String")]
    [ScriptDefaultValue(Value = "null")]
    public class String
    {
        [ImportMember("Empty")]
        public const string Empty = "";
        [ImportMember("Space")]
        public const string Space = " ";        

        public static bool operator ==(string s1, string s2)
        {
            return false;
        }

        public override int GetHashCode()
        {
            return base.GetHashCode();
        }

        public override bool Equals(object that)
        {
            return base.Equals(that);
        }

        public static bool operator !=(string s1, string s2)
        {
            return false;
        }

        public int Length
        {
            get { return 0; }
        }

        public char CharAt(int index)
        {
            return ' ';
        }

        public int CharCodeAt(int index)
        {
            return 0;
        }

        public static string FromCharCode(params int[] codes)
        {
            return string.Empty;
        }

        public int IndexOf(string str)
        {
            return 0;
        }

        public int IndexOf(string str, int start)
        {
            return 0;
        }

        public int LastIndexOf(string str)
        {
            return 0;
        }

        public int LastIndexOf(string str, int start)
        {
            return 0;
        }

        public string[] Match(RegularExpression regex)
        {
            return null;
        }

        public string Replace(RegularExpression regex, string newString)
        {
            return null;
        }

        public string Replace(string oldStr, string newStr)
        {
            return null;
        }

        public int Search(RegularExpression regex)
        {
            return 0;
        }

        public string Slice(int start)
        {
            return null;
        }

        public string Slice(int start, int end)
        {
            return null;
        }

        public string[] Split(string delimitor)
        {
            return null;
        }

        public string[] Split(string delimitor, int limit)
        {
            return null;
        }

        public string Substr(int start)
        {
            return null;
        }

        public string Substr(int start, int length)
        {
            return null;
        }

        public string Substring(int from)
        {
            return null;
        }

        public string Substring(int from, int to)
        {
            return null;
        }

        public string ToLowerCase()
        {
            return null;
        }

        public string ToUpperCase()
        {
            return null;
        }

        /*
        public string ValueOf()
        {
            return null;
        }
        */

        public override string ToString()
        {
            uint i = 100;
            if (i == 10000)
            {
            }
            return this;
        }

        [NonScript]
        public static string Concat(string str1, string str2)
        {
            return null;
        }

        [NonScript]
        public static string Concat(string str1, string str2, string str3)
        {
            return null;
        }

        [NonScript]
        public static string Concat(string str1, string str2, string str3, string str4)
        {
            return null;
        }

        [NonScript]
        public static string Concat(params string[] strs)
        {
            return string.Empty;
        }

        [NonScript]
        public static string Concat(object obj)
        {
            return null;
        }

        [NonScript]
        public static string Concat(object obj1, object obj2)
        {
            return null;
        }

        [NonScript]
        public static string Concat(object obj1, object obj2, object obj3)
        {
            return null;
        }

        [NonScript]
        public static string Concat(object obj1, object obj2, object obj3, object obj4)
        {
            return null;
        }

        [NonScript]
        public static string Concat(params object[] objs)
        {
            return null;
        }
    }
}
